This specification relates to memory access by virtual machine systems.
Virtual machines, e.g., cloud virtual machines, sometimes require a constrained bidirectional communication path to their virtual devices. For instance, a virtual machine may use a circular buffer with head and tail pointers. A hypervisor, hypervisor's agent, or trusted physical device may poll the head pointer to determine when a virtual machine has enqueued new requests, and may read the contents of the queue. Some systems may use several processor cores to poll queues.